package org.lai.mapper;

import org.apache.ibatis.annotations.*;
import org.lai.pojo.Dept;

import java.util.List;

@Mapper
public interface DeptMapper {
    /**
     * 查询所有部门信息
     *
     */
    // 方式一:手动结果映射
//    @Results({
//            @Result(column = "create_time", property = "createTime"),
//            @Result(column = "update_time", property = "updateTime"),
//    })
    // 方式二: 起别名
//    @Select("select id, name, create_time createTime, update_time updateTime from dept order by update_time desc;")
    // 方式三: 开启驼峰命名的开关
    @Select("select id, name, create_time , update_time  from dept order by update_time desc;")
    List<Dept> findAll();

    /**
     * 根据di删除部门
     * @param id
     */
    @Delete("delete from dept where id = #{id}")
    void deleteById(Integer id);

    /**
     * 新增部门
     * 当插入数据时是一个对象时,对象属性名与表字段名一致时,可以省略别名并使用驼峰命名
     * @param dept
     */
    @Insert("insert into dept(name, create_time, update_time) values(#{name},#{createTime},#{updateTime})")
    void insert(Dept dept);

    /**
     * 根据id查询部门数据
     * @param id
     * @return
     */
    @Select("select id, name, create_time, update_time from dept where id = #{id}")
    Dept getById(Integer id);

    /**
     * 根据id修改部门信息
     * @param dept
     */
    @Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
    void update(Dept dept);
    @Select("select count(*) count from emp where dept_id = #{id};")
    Integer getCountById(Integer id);
}
